List এবং Vector এর সাথে Iteration Techniques

Computer Programming - ক্লোজার (Clojure) Looping এবং Iteration (Looping and Iteration) |
260
260

List এবং Vector এর সাথে Iteration Techniques

ক্লোজার (Clojure) প্রোগ্রামিং ভাষায়, List এবং Vector দুটি গুরুত্বপূর্ণ ডেটা কাঠামো, যা ডেটা সংরক্ষণ এবং পরিচালনার জন্য ব্যবহার হয়। এই ডেটা কাঠামোগুলির সাথে ইটারেশন (Iteration) করার জন্য ক্লোজার বিভিন্ন শক্তিশালী ফাংশন সরবরাহ করে। এর মাধ্যমে আমরা সহজেই প্রতিটি উপাদান এক্সেস, পরিবর্তন এবং প্রক্রিয়া করতে পারি।

ক্লোজারে লিস্ট এবং ভেক্টরের সাথে ইটারেশন করার জন্য বিভিন্ন ফাংশন এবং কৌশল রয়েছে, যেমন map, filter, reduce, doseq, for, ইত্যাদি।


১. List এবং Vector এর মধ্যে পার্থক্য

  • List: লিনিয়ার লিঙ্কড লিস্ট। এতে ডেটা সংরক্ষণ করা হয় এবং লিস্টের প্রথম আইটেম থেকে ইটারেশন শুরু হয়।
  • Vector: ইমিউটেবল, দ্রুত অ্যাক্সেসযোগ্য ডেটা কাঠামো, যা ইনডেক্সিংয়ের মাধ্যমে দ্রুত এলিমেন্ট এক্সেসের সুবিধা দেয়।

২. map ফাংশন

map একটি খুবই শক্তিশালী ফাংশন যা একটি ফাংশনকে লিস্ট বা ভেক্টরের প্রতিটি উপাদানের উপর প্রয়োগ করে একটি নতুন ডেটা কাঠামো তৈরি করে। এটি ফাংশনাল প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ অংশ।

উদাহরণ: map ব্যবহার করে লিস্ট এবং ভেক্টরের উপর ইটারেশন

(def my-list '(1 2 3 4))
(def my-vector [1 2 3 4])

; লিস্টের প্রতি উপাদানে ২ যোগ করা
(map #( + % 2) my-list) ; আউটপুট: (3 4 5 6)

; ভেক্টরের প্রতি উপাদানে ২ যোগ করা
(map #( + % 2) my-vector) ; আউটপুট: (3 4 5 6)

এখানে, map ফাংশনটি একটি অ্যানোনিমাস ফাংশন (lambda) ব্যবহার করে লিস্ট এবং ভেক্টরের প্রতিটি উপাদানের ওপর + 2 অপারেশন চালায়।


৩. filter ফাংশন

filter ফাংশনটি একটি শর্তের ভিত্তিতে লিস্ট বা ভেক্টর থেকে নির্বাচিত উপাদানগুলি ফিল্টার করে এবং নতুন একটি লিস্ট প্রদান করে। এটি শুধুমাত্র সেই উপাদানগুলো রাখে যেগুলি শর্ত পূরণ করে।

উদাহরণ: filter ব্যবহার করে লিস্ট এবং ভেক্টরের উপর ইটারেশন

; লিস্টের মধ্যে ৩ এর বড় সংখ্যাগুলো বের করা
(filter #(> % 3) my-list) ; আউটপুট: (4)

; ভেক্টরের মধ্যে ৩ এর বড় সংখ্যাগুলো বের করা
(filter #(> % 3) my-vector) ; আউটপুট: (4)

এখানে, filter ফাংশনটি একটি শর্ত (> 3) চেক করে এবং শুধুমাত্র সেই উপাদানগুলো রেখে দেয় যেগুলি শর্ত পূরণ করে।


৪. reduce ফাংশন

reduce ফাংশনটি একটি অ্যাকিউমুলেটর ব্যবহার করে লিস্ট বা ভেক্টরের উপাদানগুলির উপর একটি অ্যাগ্রিগেট অপারেশন (যেমন যোগ, গুণ, ইত্যাদি) করে। এটি একক মানে রেজাল্ট প্রদান করে।

উদাহরণ: reduce ব্যবহার করে লিস্ট এবং ভেক্টরের উপর ইটারেশন

; লিস্টের উপাদানগুলোর যোগফল বের করা
(reduce + my-list) ; আউটপুট: 10

; ভেক্টরের উপাদানগুলোর যোগফল বের করা
(reduce + my-vector) ; আউটপুট: 10

এখানে, reduce ফাংশনটি + অপারেশন ব্যবহার করে লিস্ট এবং ভেক্টরের উপাদানগুলির যোগফল হিসাব করে।


৫. doseq ফাংশন

doseq একটি ইটারেটিভ ফাংশন যা সাইড-এফেক্ট তৈরি করতে ব্যবহৃত হয়, যেমন একটি ভেক্টর বা লিস্টের প্রতিটি উপাদানে কিছু কাজ করা (উদাহরণস্বরূপ, প্রিন্ট করা)। এটি মূলত লুপিংয়ের মতো কাজ করে।

উদাহরণ: doseq ব্যবহার করে লিস্ট এবং ভেক্টরের উপর ইটারেশন

; লিস্টের প্রতিটি উপাদান প্রিন্ট করা
(doseq [x my-list] 
  (println x)) ; আউটপুট: 1 2 3 4

; ভেক্টরের প্রতিটি উপাদান প্রিন্ট করা
(doseq [x my-vector] 
  (println x)) ; আউটপুট: 1 2 3 4

এখানে, doseq লিস্ট এবং ভেক্টরের প্রতিটি উপাদানকে প্রিন্ট করে।


৬. for ফাংশন

for একটি কম্প্যাক্ট ফাংশন যা একটি পদ্ধতির মাধ্যমে একাধিক শর্ত এবং সিকোয়েন্সের উপর ইটারেশন করতে ব্যবহৃত হয়। এটি একটি লিস্ট কম্প্রিহেনশন স্টাইল ফাংশন, যেখানে শর্ত, ফিল্টার এবং মডিফিকেশন একত্রে ব্যবহৃত হয়।

উদাহরণ: for ব্যবহার করে লিস্ট এবং ভেক্টরের উপর ইটারেশন

; লিস্টের সকল উপাদানে ২ যোগ করা
(for [x my-list] 
  (+ x 2)) ; আউটপুট: (3 4 5 6)

; ভেক্টরের সকল উপাদানে ২ যোগ করা
(for [x my-vector] 
  (+ x 2)) ; আউটপুট: (3 4 5 6)

এখানে, for ফাংশনটি লিস্ট বা ভেক্টরের প্রতিটি উপাদানে + 2 অপারেশন চালিয়ে নতুন লিস্ট তৈরি করছে।


৭. doseq বনাম for

ফাংশনউদ্দেশ্যব্যবহার
doseqসাইড-এফেক্ট তৈরি করতে ব্যবহৃত (উদাহরণস্বরূপ, প্রিন্ট করা)doseq ব্যবহৃত হয় যখন ফলাফল প্রয়োজন নয়, শুধু কাজটি করা দরকার
forনতুন সংগ্রহ তৈরি করতে ব্যবহৃতfor ব্যবহৃত হয় যখন নতুন ডেটা কাঠামো তৈরি করতে হয়

সারসংক্ষেপ

ক্লোজারে List এবং Vector এর সাথে ইটারেশন করার জন্য বিভিন্ন শক্তিশালী কৌশল ও ফাংশন রয়েছে:

  • map: প্রতিটি উপাদানে একটি ফাংশন প্রয়োগ করে একটি নতুন সংগ্রহ তৈরি করে।
  • filter: শর্ত অনুসারে উপাদানগুলো ফিল্টার করে একটি নতুন সংগ্রহ তৈরি করে।
  • reduce: একটি অ্যাকিউমুলেটর ব্যবহার করে উপাদানগুলোর উপর একটি অ্যাগ্রিগেট অপারেশন করে।
  • doseq: সাইড-এফেক্ট তৈরির জন্য ব্যবহৃত (যেমন প্রিন্ট করা)।
  • for: লিস্ট কম্প্রিহেনশন স্টাইলের ফাংশন, যেখানে শর্ত এবং ফিল্টার ব্যবহৃত হয়।

এই ফাংশনগুলো ক্লোজারে লিস্ট এবং ভেক্টরের উপর ইটারেশন ও ডেটা ম্যানিপুলেশনের জন্য খুবই শক্তিশালী এবং নমনীয়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion